package all.com.jinyongqunxiax.model.mod;

import com.randy.fundation.JxAssert;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import all.com.jinyongqunxiax.BuildConfig;
import androidx.annotation.NonNull;
import jy.game.components.battle.JyBattle;
import jy.game.tools.BasePojoManager;

public class BattleManager {
    public Map<String, JyBattle> map  = new HashMap<>();
    public List<JyBattle>        list = new ArrayList<>();
    String xmlPath;

    public BattleManager(@NonNull String xmlPath) {
        this.xmlPath = xmlPath;
    }

    BasePojoManager<JyBattle> manager;

    public String load() {
        map.clear();
        list.clear();

        manager = BasePojoManager.build(xmlPath, JyBattle.class);
        if (!manager.success()) {
            return manager.message;
        }
        StringBuilder message = new StringBuilder(getClass().getSimpleName());

        list = manager.datas;
        for (JyBattle item : list) {
            if (map.containsKey(item.key)) {
                message.append("发现重复:").append(item.key);
                continue;
            }
            map.put(item.key, item);
        }


        return manager.message;
    }


//    static public class Root {
//        @ElementList(inline = true)
//        List<Model> models;
//    }
//
//    /**
//     * <battle key="湘妃庙.凤天南作恶.战斗" mapkey="shinei" music="" must="主角#胡斐">
//     * <roles>
//     * <role face="1" index="1" key="" team="1" x="2" y="1"/>
//     * <role face="1" index="1" key="" team="1" x="2" y="1"/>
//     * <role face="0" key="凤天南" team="2" x="10" y="2"/>
//     * </roles>
//     * <random>
//     * <role face="0" level="1" name="五虎派保镖" x="8" y="0"/>
//     * <role face="0" level="1" name="五虎派保镖" x="7" y="2"/>
//     * <role face="0" level="1" name="五虎派保镖" x="7" y="3"/>
//     * <role face="0" level="1" name="五虎派保镖" x="6" y="1"/>
//     * <role face="0" level="1" name="五虎派保镖" x="5" y="3"/>
//     * <role face="0" level="1" name="五虎派保镖" x="5" y="0"/>
//     * </random>
//     * </battle>
//     */
//    @wx.xml.simpleframework.xml.Root(name = "battle")
//    static public class Model {
//        public @Attribute(name = "key")
//        String name;
//        public @Attribute
//        String mapkey;
//        public @Attribute
//        String music;
//        public @Attribute
//        String must;
//
//        public @Attribute(required = false)
//        String trainingmode;
//        public @Attribute(required = false)
//        String setmoney;
//
//        public @ElementList
//        List<Role> roles;
//
//        public @ElementList(required = false, inline = true)
//        List<Role> roles2;
//
//        public @ElementList(required = false, inline = true)
//        List<Random> randoms;
//
//
//        List<Role> random = null;
//
//        public List<Role> getRandom() {
//            if (random == null) {
//                random = new ArrayList<>();
//
//                JxFunc.of(randoms).ifPresent(new JxFunc.Action<Random>() {
//                    @Override
//                    public void yield(@NonNull Random value) {
//                        if (value.roles != null) {
//                            random.addAll(value.roles);
//                        }
//                    }
//                });
//            }
//
//            return random;
//        }
//    }
//
//    @wx.xml.simpleframework.xml.Root(name = "random")
//    static public class Random {
//        public @ElementList(required = false, inline = true)
//        List<Role> roles = new ArrayList<>();
//    }
//
//    /**
//     * <role face="1" index="1" key="" team="1" x="2" y="1"/>
//     * <role boss="true" animation="shibing" difficulty="2" face="0" level="1" name="五虎派保镖" x="8" y="0"/>
//     */
//    @wx.xml.simpleframework.xml.Root(name = "role")
//    static public class Role {
//        public @Attribute(required = false)
//        String name;
//
//        public @Attribute(required = false)
//        String key;
//
//        public @Attribute(required = false)
//        int face;
//
//        public @Attribute(required = false)
//        String boss;
//
//        public @Attribute(required = false)
//        int index;
//
//        public @Attribute(required = false)
//        int difficulty;
//
//        public @Attribute(required = false)
//        String animation;
//
//        public @Attribute(required = false)
//        String team;
//        public @Attribute(required = false)
//        int    x;
//        public @Attribute(required = false)
//        int    y;
//        public @Attribute(required = false)
//        int    level;
//
//        public String getName() {
//            String name = this.name;
//            if (TextUtils.isEmpty(name)) {
//                name = key;
//            }
//
//            if (TextUtils.isEmpty(name)) {
//                name = "Role#" + index;
//            }
//
//            return name;
//        }
//    }
}
